package com.tony.spring.mode.chain;

import java.util.ArrayList;
import java.util.List;

/**
 * 医院入口类
 * @author qiu
 *
 */
public class DoctorDoor {
	
	/**
	 * 科室集合
	 */
	private static List<DoctorChain> chains = new ArrayList<DoctorChain>(); 

	/**
	 * 添加科室责任链
	 * @param doctor
	 */
	public void registerDoctor(DoctorChain doctor){
		chains.add(doctor);
	}
	
	/**
	 * 添加科室责任链
	 * @param doctor
	 */
	public void removeDoctor(DoctorChain doctor){
		chains.remove(doctor);
	}
	
	/**
	 * 收纳病人进来
	 * @throws Exception 
	 */
	public void receiveBingUser(BingUser bingUser) throws Exception{
		// 1、收纳病人成功
		System.out.println("收纳病人成功");
		
		// 2、开始查获是哪一个科室进行处理
		if(chains != null && chains.size() > 0){
			// 3、找科室医生
			for(DoctorChain doctorChain : chains){
				if(doctorChain.isBingUser(bingUser)){
					doctorChain.doTreat(bingUser);
					return;
				}
			}
		} else {
			throw new Exception("医院没有开科");
		}
	}
	
}
